home *** CD-ROM | disk | FTP | other *** search
/ Loadstar Extras 3 / Ex3side1.d64 / source convert.s < prev    next >
Text File  |  2022-08-28  |  8KB  |  849 lines

  1. acptr =$ffa5
  2. open =$ffc0
  3. readst =$ffb7
  4. setlfs =$ffba
  5. setnam =$ffbd
  6. load =$ffd5
  7. getin =$ffe4
  8. clrchn =$ffcc
  9. close =$ffc3   ;a
  10. ciout =$ffa8
  11. chrin =$ffcf
  12. chkout =$ffc9  ;x
  13. chkin =$ffc6   ;x
  14. stop =$ffe1
  15. udtim =$ffea
  16. plot =$fff0
  17. chrout =$ffd2
  18. color'pointer =243
  19. screen'line'pointer =209
  20. print'number =$bdcd ;x,a
  21. clear'line =59903
  22. background =53281
  23. border =53280
  24. unlisten =$ffae
  25. clall =$ffe7
  26.  
  27. .org $9000
  28. .obj "@0:tools 9000"
  29. ;mem
  30.  
  31. jmp checker
  32. jmp hex'read
  33. jmp fill
  34. jmp directory
  35. jmp find
  36. jmp screen'pet
  37. jmp text'source
  38. jmp binary'source
  39. jmp clear'array
  40.  
  41. checker lda 199
  42. sta condition
  43. jsr get'string
  44. jsr setnam
  45. lda #2
  46. jsr close
  47. jsr get'number
  48. tya
  49. tax
  50. lda #2
  51. ldy #2
  52. jsr setlfs
  53. jsr open
  54.  
  55. jsr clrchn
  56.  
  57. ldx #2
  58. jsr chkin
  59.  
  60. lda #0
  61. sta length
  62. sta length+1
  63. sta end'address
  64. sta end'address+1
  65.  
  66. jsr getin
  67. inc length
  68. sta load'address
  69. sta end'address
  70. jsr readst
  71. and #64
  72. bne end
  73. jsr getin
  74. inc length
  75. sta load'address+1
  76. sta end'address+1
  77. jsr readst
  78. and #64
  79. bne end
  80.  
  81. - jsr getin
  82. inc length
  83. bne +
  84. inc length+1
  85. jsr graph
  86. + inc end'address
  87. bne +
  88. inc end'address+1
  89. + jsr readst
  90. and #64
  91. bne end
  92. beq -
  93.  
  94. end lda #2
  95. jsr close
  96. jsr clrchn
  97.  
  98. lda #13
  99. jsr chrout
  100. lda condition
  101. sta 199
  102.  
  103. lda <load'text
  104. ldy >load'text
  105. jsr $ab1e
  106.  
  107. ldx load'address
  108. lda load'address+1
  109.  
  110. jsr $bdcd
  111.  
  112. lda " "
  113. jsr chrout
  114. lda "("
  115. jsr chrout
  116. lda <load'address+1
  117. sta 251
  118. lda >load'address+1
  119. sta 252
  120. jsr print'hex
  121. lda "-"
  122. jsr chrout
  123.  
  124. lda <end'address+1
  125. sta 251
  126. lda >end'address+1
  127. jsr print'hex
  128. lda ")"
  129. jsr chrout
  130.  
  131. lda <len'text
  132. ldy >len'text
  133. jsr $ab1e
  134.  
  135. ldx length
  136. lda length+1
  137. jsr $bdcd
  138.  
  139. rts
  140.  
  141. print'hex lda "$"
  142. jsr chrout
  143.  
  144. jsr hex'convert
  145. dec 251
  146. lda 251
  147. cmp #255
  148. bne +
  149. dec 252
  150. + jsr hex'convert
  151. rts
  152.  
  153. hex'convert ldy #0
  154. lda (251),y
  155. tax
  156.  
  157. and #%11110000
  158. lsr
  159. lsr
  160. lsr
  161. lsr
  162. tay
  163. lda hex,y
  164. jsr chrout
  165.  
  166. txa
  167. and #%00001111
  168. tay
  169. lda hex,y
  170. jsr chrout
  171. rts
  172.  
  173. graph ldy index
  174. cpy #7
  175. bcc +
  176. ldy #255
  177. lda #29
  178. jsr chrout
  179. + iny
  180. sty index
  181. lda reverse,y
  182. sta 199
  183. lda char,y
  184. jsr chrout
  185. lda #157
  186. jsr chrout
  187. rts
  188.  
  189. hex'read lda #0
  190. sta 212
  191. sta 199
  192. lda #147
  193. jsr chrout
  194.  
  195. jsr get'string
  196. jsr setnam
  197. jsr get'number
  198. tya
  199. tax
  200. lda #2
  201. tay
  202. jsr setlfs
  203. jsr open
  204.  
  205. jsr clrchn
  206. ldx #2
  207. jsr chkin
  208. lda #0
  209. sta counter
  210.  
  211. jsr getin
  212. sta 251
  213. jsr getin
  214. sta 252
  215.  
  216. jsr print'position
  217.  
  218. read'file jsr getin
  219. sta temp
  220. jsr readst
  221. and #66
  222. bne end'o'file
  223. jsr convert
  224.  
  225. lda #30
  226. clc
  227. adc counter
  228. tay
  229. lda temp
  230. sta (209),y
  231. lda 646
  232. sta (243),y
  233.  
  234. inc counter
  235. lda counter
  236. cmp #8
  237. bcc +
  238. lda #0
  239. sta counter
  240. lda #13
  241. jsr chrout
  242. lda #8
  243. clc
  244. adc 251
  245. sta 251
  246. lda #0
  247. adc 252
  248. sta 252
  249. jsr print'position
  250.  
  251. - lda 653
  252. bne -
  253. lda 197
  254. cmp #63
  255. beq end'o'file
  256.  
  257. + jmp read'file
  258.  
  259. end'o'file lda #2
  260. jsr close
  261. jmp clrchn
  262.  
  263. print'position lda ":"
  264. jsr chrout
  265. dec flag
  266. lda 252
  267. sta temp
  268. jsr convert
  269. lda 251
  270. sta temp ;fall through to convert
  271. inc flag
  272.  
  273. convert lda temp
  274. and #%11110000
  275. lsr
  276. lsr
  277. lsr
  278. lsr
  279. tay
  280. lda hex,y
  281. jsr chrout
  282. lda temp
  283. and #%00001111
  284. tay
  285. lda hex,y
  286. jsr chrout
  287. bit flag
  288. bmi +
  289. lda " "
  290. jsr chrout  
  291. + rts
  292.  
  293. fill jsr get'number
  294. sta 252
  295. sty 251
  296. jsr get'number
  297. sta 254
  298. sty 253
  299. jsr get'number
  300. sty temp
  301.  
  302. ldy #0
  303.  
  304. lda temp
  305. - sta (251),y
  306. inc 251
  307. bne +
  308. inc 252
  309. + ldx 252
  310. cpx 254
  311. bcc -
  312. ldx 251
  313. cpx 253
  314. bcc -
  315. beq -
  316. rts
  317.  
  318. get'string jsr $aefd
  319. jsr $ad9e
  320. jsr $b6a3
  321.  
  322. ldx $22
  323. ldy $23
  324. rts
  325.  
  326. get'number jsr $aefd
  327. jsr $ad8a
  328. jsr $b7f7
  329. rts
  330.  
  331. directory jsr get'string
  332. jsr setnam
  333. jsr get'number
  334. tya
  335. tax
  336. lda #2
  337. ldy #0
  338. jsr setlfs
  339. jsr open
  340.  
  341. jsr clrchn
  342. ldx #2
  343. jsr chkin
  344.  
  345. jsr getin
  346. jsr getin
  347. jsr getin
  348. jsr getin
  349.  
  350. get'blocks jsr getin
  351. sta 251
  352. jsr getin
  353. ldx 251
  354. jsr print'number
  355. lda " "
  356. jsr chrout
  357. jsr chrout
  358.  
  359. get'name lda 653
  360. bne get'name
  361. jsr getin
  362. beq next'name
  363. jsr chrout
  364. jsr readst
  365. and #66
  366. bne end'dir
  367. beq get'name
  368.  
  369. next'name jsr getin
  370. beq end'dir
  371. jsr getin
  372. lda #13
  373. jsr chrout
  374. jmp get'blocks
  375.  
  376. end'dir lda #2
  377. jsr close
  378. jsr clrchn
  379. rts
  380.  
  381. find lda #0;sys,file$,dev,string,and,or,buffer loc
  382. sta flag
  383. jsr get'string
  384. jsr setnam
  385. jsr get'number
  386. tya
  387. tax
  388. lda #2
  389. ldy #2
  390. jsr setlfs
  391. jsr open
  392.  
  393. jsr clrchn
  394. ldx #2
  395. jsr chkin
  396.  
  397. jsr get'string
  398. stx 249
  399. sty 250
  400. sta length
  401. jsr get'number
  402. sty length+1;anding factor
  403. jsr get'number
  404. sty load'address;oring factor
  405. jsr get'number
  406. sta 252
  407. sty 251
  408.  
  409. lda #1
  410. clc
  411. adc 251
  412. sta 253
  413. lda #0
  414. adc 252
  415. sta 254
  416.  
  417. fill'buffer ldy #0
  418. - jsr getin
  419. ora load'address
  420. and length+1
  421. sta (251),y
  422. iny
  423. cpy length
  424. bne -
  425.  
  426. search ldy #0
  427. - lda (249),y
  428. ora load'address
  429. and length+1
  430. cmp (251),y
  431. bne bump'buffer
  432. iny
  433. cpy length
  434. bne -
  435.  
  436. found lda "y"
  437. sta 631
  438. lda #1
  439. sta 198
  440. search'out lda #2
  441. jsr close
  442. jmp clrchn
  443.  
  444. bump'buffer lda flag
  445. bne end'search
  446. ldy #0
  447. - lda (253),y
  448. sta (251),y
  449. iny
  450. cpy length
  451. bne -
  452. dey
  453. jsr getin
  454. and length+1
  455. ora load'address
  456. sta (251),y
  457.  
  458. jsr readst
  459. and #66
  460. sta flag
  461. jmp search
  462.  
  463. end'search lda "n"
  464. sta 631
  465. lda #1
  466. sta 198
  467. jmp search'out
  468.  
  469.  
  470. ;sys name in,device,name out,device
  471. screen'pet lda #0
  472. sta eof
  473. jsr clall
  474. jsr get'string
  475. jsr setnam
  476. jsr get'number
  477. sty device
  478. lda #2
  479. ldx device
  480. ldy #2
  481. jsr setlfs
  482. jsr open
  483. jsr get'string
  484. jsr setnam
  485. jsr get'number
  486. sty device+1
  487. lda #1
  488. ldx device+1
  489. ldy #1
  490. jsr setlfs
  491. jsr open
  492. jsr clrchn
  493.  
  494. ldx #2
  495. jsr chkin
  496. ldx #1
  497. jsr chkout
  498.  
  499. lda <$8000
  500. jsr chrout
  501. lda >$8000
  502. jsr chrout
  503.  
  504. get'byte ldx #2
  505. jsr chkin
  506. jsr getin
  507. sta temp
  508. jsr readst
  509. and #66
  510. sta eof
  511. ldx #1
  512. jsr chkout
  513. lda temp
  514. cmp #31
  515. beq back'arrow
  516. cmp #91
  517. beq shift'plus
  518. jsr aconvert
  519. jsr chrout
  520. check lda eof
  521. beq get'byte
  522. lda #1
  523. jsr close
  524. lda #2
  525. jsr close
  526. jmp clrchn
  527.  
  528. back'arrow lda #13
  529. jsr chrout
  530. jmp check
  531.  
  532. shift'plus lda "{SHIFT-+}"
  533. jsr chrout
  534. jmp check
  535.  
  536. aconvert sta store;     screen code to ASCII
  537. and #$3f
  538. asl store
  539. bit store
  540. bpl +
  541. ora #128
  542. + bvs +
  543. ora #$40
  544. sta store
  545. + rts
  546.  
  547. ;sys name in,device,name out,device
  548. text'source lda #0
  549. sta eof
  550. jsr clall
  551. jsr get'string
  552. jsr setnam
  553. jsr get'number
  554. sty device
  555. lda #2
  556. ldx device
  557. ldy #2
  558. jsr setlfs
  559. jsr open
  560. jsr get'string
  561. jsr setnam
  562. jsr get'number
  563. sty device+1
  564. lda #1
  565. ldx device+1
  566. ldy #1
  567. jsr setlfs
  568. jsr open
  569. jsr clrchn
  570.  
  571. ldx #2
  572. jsr chkin
  573. ldx #1
  574. jsr chkout
  575.  
  576. jsr doasc
  577.  
  578. get'byteii ldx #2
  579. jsr chkin
  580. jsr getin
  581. sta temp
  582. jsr readst
  583. and #66
  584. sta eof
  585. ldx #1
  586. jsr chkout
  587. lda temp
  588. jsr write'bytes
  589. scheck lda eof
  590. beq get'byteii
  591. lda #13
  592. jsr chrout
  593. jsr chrout
  594. lda #1
  595. jsr close
  596. lda #2
  597. jsr close
  598. jmp clrchn
  599.  
  600. write'bytes ldx #1
  601. jsr chkout
  602. lda temp
  603. cmp #13
  604. beq endline
  605. cmp #34
  606. bne +
  607. jsr do'quote
  608. rts
  609. + jsr chrout
  610. rts
  611.  
  612. endline ldx #1
  613. jsr chkout
  614. ldy #0
  615. - lda endtext,y
  616. beq doasc
  617. jsr chrout
  618. iny
  619. bne -
  620.  
  621. doasc ldx #1
  622. jsr chkout
  623. ldy #0
  624. - lda astext,y
  625. beq +
  626. jsr chrout
  627. iny
  628. bne -
  629.  
  630. + rts
  631.  
  632. do'quote ldx #1
  633. jsr chkout
  634. ldy #0
  635. - lda quote'text,y
  636. beq +
  637. jsr chrout
  638. iny
  639. bne -
  640.  
  641. + rts
  642.  
  643.  
  644.  
  645.  
  646. ;sys name in,device,name out,device
  647. binary'source lda #0
  648. sta eof
  649. jsr clall
  650. jsr get'string
  651. jsr setnam
  652. jsr get'number
  653. sty device
  654. lda #2
  655. ldx device
  656. ldy #2
  657. jsr setlfs
  658. jsr open
  659. jsr get'string
  660. jsr setnam
  661. jsr get'number
  662. sty device+1
  663. lda #1
  664. ldx device+1
  665. ldy #1
  666. jsr setlfs
  667. jsr open
  668. jsr clrchn
  669.  
  670. ldx #2
  671. jsr chkin
  672. jsr getin
  673. jsr getin
  674.  
  675. lda #7
  676. sta counter
  677.  
  678.  
  679. jsr dobyt
  680.  
  681. get'byteiii ldx #2
  682. jsr chkin
  683. jsr getin
  684. sta temp
  685. jsr readst
  686. and #66
  687. sta eof
  688. ldx #1
  689. jsr chkout
  690. lda temp
  691. jsr write'hbytes
  692. bcheck lda eof
  693. beq get'byteiii
  694. lda #13
  695. jsr chrout
  696. jsr chrout
  697. lda #1
  698. jsr close
  699. lda #2
  700. jsr close
  701. jmp clrchn
  702.  
  703. write'hbytes ldx #1
  704. jsr chkout
  705. jsr convertii
  706. dec counter
  707. bmi endbline
  708. lda eof
  709. bne +
  710. lda ","
  711. jsr chrout
  712. + rts
  713.  
  714. endbline lda #7
  715. sta counter
  716. ldx #1
  717. jsr chkout
  718. lda #13
  719. jsr chrout
  720.  
  721.  
  722. dobyt ldx #1
  723. jsr chkout
  724. ldy #0
  725. - lda byttext,y
  726. beq +
  727. jsr chrout
  728. iny
  729. bne -
  730.  
  731. + rts
  732.  
  733. convertii lda "$"
  734. jsr chrout
  735. lda temp
  736. and #%11110000
  737. lsr
  738. lsr
  739. lsr
  740. lsr
  741. tay
  742. lda hex,y
  743. and #127
  744. jsr chrout
  745. lda temp
  746. and #%00001111
  747. tay
  748. lda hex,y
  749. and #127
  750. jsr chrout
  751. + rts
  752.  
  753. clear'array ldy <1024
  754. lda >1024
  755. sty 251
  756. sta 252
  757. ldx #3
  758.  
  759. - lda #1
  760. sec
  761. sbc (251),y
  762. sta (251),y
  763. iny
  764. bne -
  765.  
  766. inc 252
  767. dex
  768. bpl -
  769.  
  770. lda <1024
  771. sta $14
  772. lda >1024
  773. sta $15
  774.  
  775. ldx #3
  776. ldy #0
  777. sty temp
  778.  
  779. - lda ($14),y
  780. bne flag'low
  781. back iny
  782. bne -
  783. inc $15
  784. dex
  785. bpl -
  786. rts
  787.  
  788. flag'low bit temp
  789. bmi high
  790.  
  791. low dec temp
  792. tya
  793. pha
  794. clc
  795. adc $14
  796. sta 251
  797. lda #0
  798. adc $15
  799. sta 252
  800. pla
  801. tay
  802. jmp back
  803.  
  804. high tya
  805. pha
  806. clc
  807. adc $14
  808. sta 253
  809. lda #0
  810. adc $15
  811. sta 254
  812. pla
  813. tay
  814. jmp back
  815.  
  816.  
  817. rts
  818.  
  819.  
  820. endtext .byt 34:.asc ":.byte 13":.byt 13,0
  821. astext .asc ".asc ":.byt 34,0
  822. byttext .asc ".byte ":.byt 0
  823. quote'text .byt 34:.asc ":.byt 34:.asc ":.byte 34,0
  824.  
  825.  
  826. device .buf 2
  827. store .byt 0
  828. eof .buf 2
  829.  
  830.  
  831. load'address .buf 2
  832. length .buf 2
  833. end'address .word 0
  834.  
  835. hex .asc "0123456789ABCDEF"
  836.  
  837. load'text .asc " load:":.byt 0
  838. len'text .asc " bytes:+":.byt 0
  839. end'text .asc "end:":.byt 0
  840. char .byt 165,180,181,161,182,170,167,32
  841. reverse .byt 0,0,0,0,1,1,1,1
  842. index .byt 0
  843. condition .byt 0
  844. te